const express = require('express');
const apiRouter = require('./router/apiRouter');
const config = require('./config/config');

/*
    分层
    view -> index.js -> router.js -> controller -> service -> model
    service -> controller -> view

    index.js中负责将不同类型的请求分发给不同的路由，路由再根据请求的内容，通知controller层进行不同的操作，controller层通知service层开始处理数据，service层通过model层提供的原生方法前往数据库进行操作，最后将结果返回给controller层，最后controller层将结果返回给view层，view层进行数据的展示。

    举个例子: view层负责展示页面，现在你在页面上下达了一个新增用户的网络请求，index.js发现是对于用户方面的网络请求，就分发给用户请求对应的router，router再把这个请求对应的操作告诉controller层，controller拿到命令后告诉service层添加一个用户，service就通过model层的模型去数据库添加了一个用户，并将结果告诉controller，controller再将结果响应给view层的网络请求，view层此时拿到结果就可以对结果中的数据进行处理了。


    router：负责将请求分发给controller
    controller: 负责处理业务逻辑，也就是model层与view层的沟通
    view：负责展示页面
    model：负责处理数据

    其实实际开发时会有一个service层, 因为model层其实是提供一个模型, 而对模型进行操作的代码其实不能写在model层中，会变得很臃肿。本节就是
*/

let app = express();

app.set('views', './views');
app.set('view engine', 'ejs');

app.use(express.urlencoded({
    extends: false
}));
app.use(express.json());
app.use(express.static('./static'));

app.use('/api', apiRouter);


app.listen(10043, () => console.log('server start,please click http://localhost:10043/api'));